home *** CD-ROM | disk | FTP | other *** search
- package sun.plugin;
-
- import java.net.URL;
- import java.util.Hashtable;
- import java.util.StringTokenizer;
- import sun.plugin.protocol.ProxyHandler;
- import sun.plugin.protocol.ProxyInfo;
- import sun.plugin.protocol.ProxyType;
-
- public class ActivatorProxyHandler implements ProxyHandler, ProxyType {
- int proxyType = 0;
- String proxyList;
- String proxyOverride;
- Hashtable proxyTable;
-
- ActivatorProxyHandler(int var1, String var2, String var3) {
- this.proxyType = var1;
- this.proxyList = var2;
- this.proxyOverride = var3;
- this.proxyTable = new Hashtable();
- }
-
- public synchronized ProxyInfo getProxyInfo(URL var1) {
- Object var2 = null;
-
- try {
- ProxyInfo var8 = (ProxyInfo)this.proxyTable.get(var1.getProtocol() + var1.getHost() + var1.getPort());
- if (var8 != null) {
- return var8;
- }
-
- if (this.proxyType != 0 && (this.proxyType != 1 || !this.isProxyBypass(this.proxyOverride, var1))) {
- if (this.proxyType == 1) {
- if (this.proxyList.indexOf("=") == -1) {
- var7 = new ProxyInfo(this.proxyList);
- } else {
- String var3 = var1.getProtocol();
- int var4 = this.proxyList.indexOf(var3 + "=");
- if (var4 == -1) {
- var7 = new ProxyInfo((String)null, -1);
- } else {
- int var5 = this.proxyList.indexOf(";", var4);
- if (var5 == -1) {
- var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1));
- } else {
- var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1, var5));
- }
- }
- }
- } else {
- String var9 = this.findProxyForURL(var1.toString());
- var7 = this.extractAutoProxySetting(var9);
- }
- } else {
- var7 = new ProxyInfo((String)null, -1);
- }
-
- this.proxyTable.put(var1.getProtocol() + var1.getHost() + var1.getPort(), var7);
- } catch (Exception var6) {
- System.err.println(((Throwable)var6).getMessage());
- ((Throwable)var6).printStackTrace();
- System.out.println(AppletViewer.getMessage("proxy_defaulted_direct"));
- var7 = new ProxyInfo((String)null, -1);
- }
-
- return var7;
- }
-
- native String findProxyForURL(String var1);
-
- boolean isProxyBypass(String var1, URL var2) {
- if (var1 != null && !var1.equals("")) {
- String var3 = var2.getHost();
- StringTokenizer var4 = new StringTokenizer(var1, ",", false);
-
- while(var4.hasMoreTokens()) {
- String var5 = var4.nextToken();
- if (var5.equals("<local>") && var3.indexOf(".") == -1) {
- return true;
- }
-
- if (this.shExpMatch(var3, var5)) {
- return true;
- }
- }
-
- return false;
- } else {
- return false;
- }
- }
-
- boolean shExpMatch(String var1, String var2) {
- try {
- var1 = var1.toLowerCase();
- var2 = var2.toLowerCase();
- return this.shExpMatch2(var1, var2);
- } catch (Throwable var4) {
- var4.printStackTrace();
- return false;
- }
- }
-
- boolean shExpMatch2(String var1, String var2) {
- if (var1 != null && var2 != null) {
- if (var2.equals("*")) {
- return true;
- } else {
- int var3 = var2.indexOf(42);
- if (var3 == -1) {
- return var1.equals(var2);
- } else if (var3 != 0) {
- Object var6 = null;
- String var5 = null;
- String var7 = var2.substring(0, var3);
- if (var3 <= var1.length()) {
- var5 = var1.substring(0, var3);
- }
-
- return var7 != null && var5 != null && var7.equals(var5) ? this.shExpMatch2(var1.substring(var3), var2.substring(var3)) : false;
- } else {
- for(int var4 = 0; var4 <= var1.length(); ++var4) {
- if (this.shExpMatch2(var1.substring(var4), var2.substring(1))) {
- return true;
- }
- }
-
- return false;
- }
- }
- } else {
- return false;
- }
- }
-
- ProxyInfo extractAutoProxySetting(String var1) {
- StringTokenizer var2 = new StringTokenizer(var1, ";", false);
- if (var2.hasMoreTokens()) {
- String var3 = var2.nextToken();
- int var4 = var3.indexOf("PROXY");
- if (var4 != -1) {
- return new ProxyInfo(var3.substring(var4 + 6));
- }
- }
-
- return new ProxyInfo((String)null, -1);
- }
- }
-